package bfw3b9.atprin.Interface;

import android.util.Log;

/**
 * Erzeugt ein Menue mit den angegebenen Items, wenn
 * 
 * @author Thomas Rinsch
 *
 */
public class InterfaceMenu 
{
	private final String LOGTAG = "ClickMenu";
	private final int[] ITEMS_PER_CIRCLE = {3,7,11};	//Maximale Anzahl an Items fuer jeden Circle
	private final long OPENDURATION = 500;	// Zeit zum oeffnen des Menues
	private InterfaceItem[] mItems;		// Die verfuegbaren items
	private Point mPosition;					// Position des Menues
	private int[] mItemsPerCircle;		// Tatsaechliche Anzahl an items pro Circle
	private long mOpenStart;			// Zeitpunkt an dem das Oeffnen begonnen hat
	private float progress;				// Prozentsatz zu dem das Menue bereits geoeffnet ist


	/**
	 * Erzeugt ein neues Menue mit den angegebenen Items
	 * @param _items
	 */
	public InterfaceMenu(InterfaceItem[] _items)
	{
		Log.d(LOGTAG, "Konstruktor aufgerufen");

		mItems = _items;
		mPosition = new Point(0,0);

		Log.d(LOGTAG, "Konstruktor erfoglreich");
	}

	/**
	 * Initialisiert das Oeffnen des Menues
	 * @param _x X-Position
	 * @param _y Y-Position
	 */
	public void openMenu(float _x, float _y)
	{
		Log.d(LOGTAG, "Menue wird geoeffnet");
		mOpenStart = System.currentTimeMillis();
		mPosition.x=_x;
		mPosition.y=_y;
		progress = 0.0f;
	}

	/**
	 * Gibt das Menue in seinem aktuellen Zustand zurueck
	 * @return Die zu zeichnenden Items
	 */
	public InterfaceItem[] getMenu()
	{
		Log.d(LOGTAG, "Menue berechnen");
		/*
		 * Aktuell wird einfach ein "fertiges" Menue
		 * zurueckgeliefert.
		 * Die Animation kommt spaeter
		 */
		Point position = new Point(0,0);

		// Die Items in einem Kreis um die Menueposition anordnen
		for (int i=0;i < mItems.length;i++)
		{
			mItems[i].y = mPosition.y + 3;
			mItems[i].x = mPosition.x;
			position = Point.rotate(mItems[i], mPosition, 360 / mItems.length * i);
			mItems[i].y = position.y;
			mItems[i].x = position.x;
		}

		Log.d(LOGTAG, "Menue berechnet");
		return mItems;
	}
}
